package cn.com.dashihui.api.ITask;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.jfinal.aop.Duang;
import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.Record;

import cn.com.dashihui.api.common.OrderCode;
import cn.com.dashihui.api.dao.Order;
import cn.com.dashihui.api.dao.OrderE;
import cn.com.dashihui.api.dao.User;
import cn.com.dashihui.api.service.ItaskService;
import cn.com.dashihui.api.service.OrderService;
import cn.com.dashihui.api.service.UserService;
import cn.com.dashihui.kit.DatetimeKit;
import cn.com.dashihui.pay.ZY.EncryUtils;
import cn.com.dashihui.pay.ZY.ZYPay;
import net.sf.json.JSONObject;

/**
 * 每天查询20天未签收的订单
 * @author Administrator
 *
 */
public class PaySearch implements Runnable{
	//使用Duang.duang进行封装，使普通类具有事务的功能
	private OrderService service = Duang.duang(OrderService.class);
		
	public void run() {
		System.out.println("查询20天内未签收订单 ，自动签收....."+System.currentTimeMillis());
		String times = DatetimeKit.getIntervalFormatDateb(20*24*60*60*1000, "");
		Date date = DatetimeKit.StrToDate(times);
		//查询所有待收货普通订单
		List<Order> list = service.queryReciveOrder(date);
		if(list.size()>0&&list!=null){
			for(Order order : list){
				//2.根据订单不同状态进行不同操作
				int payState = order.getInt("payState");
				if(payState!=OrderCode.OrderPayState.HAD_PAY){
					continue;
				}
				int userid = order.getInt("userid");
				User user = User.me().findById(userid);
				//3.签收订单操作，并记录日志
				try {
					//在service中进行订单签收(修改订单状态、商品返利、用户是否升级为黄金会员)的一系列操作,保证事务回滚
					service.receiveOrder(order,user);
					continue;
				} catch (Exception e) {
					continue;
				}
			}
		}
		//查询所有待收货兑换订单
		List<OrderE> exchangeList = service.queryReciveExchangeOrder(date);
		if(exchangeList.size()>0&&exchangeList!=null){
			for(OrderE order : exchangeList){
				//2.根据订单不同状态进行不同操作
				int payState = order.getInt("payState");
				if(payState!=OrderCode.OrderPayState.HAD_PAY){
					continue;
				}
				int id = order.getInt("userid");
				User user = service.findUserByid(id);
				//3.签收订单操作，并记录日志
				try {
					//在service中进行订单签收(修改订单状态、商品返利、用户是否升级为黄金会员)的一系列操作,保证事务回滚
					service.receiveExchangeOrder(order,user);
					continue;
				} catch (Exception e) {
					continue;
				}
			}
		}
		
	}

}
